#ifndef __APP_WIFI_H__
#define __APP_WIFI_H__

#include <stdint.h>

#include "hal_wifi.h"

#ifdef __cplusplus
extern "C" {
#endif

/**
 * @brief Wi-Fi STA模式连接信息结构体
 */
typedef struct
{
    char ssid[32];        /**< Wi-Fi SSID */
    char pwd[64];         /**< Wi-Fi 密码 */
} app_sta_conn_info_t;

/**
 * @brief Wi-Fi 应用信息结构体
 */
typedef struct
{
    uint8_t got_ip : 1;             /**< 是否获取到IP地址 */
    uint8_t sta_started : 1;        /**< STA模式是否启动 */
    uint8_t reserved : 6;           /**< 保留位 */
    hal_wifi_mode_t mode;           /**< Wi-Fi工作模式 */
    app_sta_conn_info_t conn_info;  /**< STA模式连接信息 */
} app_wifi_info_t;

/**
 * @brief 初始化 Wi-Fi
 * @details 初始化 Wi-Fi 模式，并根据模式调用相应的初始化函数
 * @return 成功返回 0，失败返回负值
 */
int app_wifi_init(void);

/**
 * @brief 连接到新的 AP
 * @param ssid AP的SSID
 * @param pwd AP的密码
 * @return 成功返回 0，失败返回负值
 */
int app_wifi_connect_to_new_ap(const char *ssid, const char *pwd);

/**
 * @brief 获取 Wi-Fi 信息
 * @return 指向 Wi-Fi 信息结构体的指针
 */
app_wifi_info_t *app_wifi_get_info(void);

#ifdef __cplusplus
}
#endif

#endif // __APP_WIFI_H__